package com.dieusoft.box.trade.entity;

import java.io.Serializable;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.jeecg.common.aspect.annotation.Dict;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;

import java.math.BigDecimal;
import java.util.Date;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import javax.persistence.Column;

/**
 * @Description: 费用明细信息表
 * @Author: jeecg-boot
 * @Date: 2020-10-22
 * @Version: V1.0
 */
@ApiModel(value = "jzx_trade对象", description = "集装箱贸易表")
@Data
@TableName("cost_info")
public class CostInfo implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /**
     * 创建日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建日期")
    private Date createTime;
    /**
     * 更新人
     */
    @ApiModelProperty(value = "更新人")
    private String updateBy;
    /**
     * 更新日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(update = "now()")
    @ApiModelProperty(value = "更新日期")
    private Date updateTime;
    /**
     * 所属部门
     */
    @ApiModelProperty(value = "所属部门")
    private String sysOrgCode;
    /**
     * 费用名称
     */
    @Excel(name = "费用名称", width = 15)
    @ApiModelProperty(value = "费用名称")
    @Dict(dicCode = "cost_name")
    private String costName;
    /**
     * 币种
     */
    @Excel(name = "币种", width = 15)
    @ApiModelProperty(value = "币种")
    @Dict(dicCode = "currency")
    private String currency;
    /**
     * 结算单位
     */
    @Excel(name = "结算单位", width = 15)
    @ApiModelProperty(value = "结算单位")
//    @Dict(dicCode = "id", dictTable = "customer_info", dicText = "title")
    private String settlementCompany;
    /**
     * 计费单位
     */
    @Excel(name = "计费单位", width = 15)
    @ApiModelProperty(value = "计费单位")
    @Dict(dicCode = "billing_unit")
    private String chargingUnit;
    /**
     * 数量
     */
    @Excel(name = "数量", width = 15)
    @ApiModelProperty(value = "数量")
    private Integer num;
    /**
     * 单价
     */
    @Excel(name = "单价", width = 15)
    @ApiModelProperty(value = "单价")
    private java.math.BigDecimal price;
    /**
     * 总价
     */
    @Excel(name = "总价", width = 15)
    @ApiModelProperty(value = "总价")
    private java.math.BigDecimal totalPrice;
    /**
     * 汇率
     */
    @Excel(name = "汇率", width = 15)
    @ApiModelProperty(value = "汇率")
    private String rate;
    /**
     * 费用状态
     */
    @Excel(name = "费用状态", width = 15)
    @ApiModelProperty(value = "费用状态")
    private String status;
    /**
     * 费用类型
     */
    @Excel(name = "费用类型", width = 15)
    @ApiModelProperty(value = "费用类型")
    private String type;
    /**
     * 账单号
     */
    @Excel(name = "账单号", width = 15)
    @ApiModelProperty(value = "账单号")
    private String billNumber;
    /**
     * 发票号
     */
    @Excel(name = "发票号", width = 15)
    @ApiModelProperty(value = "发票号")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String invoiceNumber;
    /**
     * 业务数据ID
     */
    @ApiModelProperty(value = "业务数据ID")
    private String buisId;

    /*开票汇率*/
    private Integer invoiceRate;

    /**
     * 备注
     */
    private String remark;

    /**
     * 对应的账单信息
     */
    private String billId;

    /**
     * 账单类型
     * 应收
     * 应付
     */
    private String billType;


    @Excel(name = "人民币总金额", width = 15)
    @ApiModelProperty(value = "人民币总金额")
    private BigDecimal cnyAmount;


    /**
     * 1:录入状态
     * 2:审核中
     * 3:审核通过
     * 4:开票申请中
     * 5:
     */
    private Integer sCode;

    private Integer buisType;

}
